package map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * java.util.Map 查找表。是JAVA集合框架(java Collections Framework)的一员
 * Map 本身是一个接口，这种结构体现出来是一个多行两列的表格。其中左列称为key,右列称为value;
 * Map总是根据key获取对应的value。
 * 常用实现类： java.util.HashMap 散列表，哈希表
 * HashMap 是使用散列算法实现的Map,当今查询速度最快的数据结构。
 *
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        /*
         * V put(K k ,V v)
         * 将一组键值对存入Map中。
         * Map 有一个特点： Key 不允许重复！！！（key 的equals决定是否为重复的key）
         * 如果使用重复的key来put元素，则是替换value 操作。此时方法返回值为替换的value,
         * 否则为null;

         */
        Integer value = map.put("语文", 99);// 如果 key值不重复，则 map.put() 会返回 null ,再自动拆箱就会 出现空指针异常。自动拆箱：int i = Integer.intValue();
        System.out.println(value);
        map.put("数学", 100);
        map.put("生物", 89);
        map.put("化学", 98);
        map.put("物理", 79);
        System.out.println(map);
        value = map.put("语文", 23);
        System.out.println(map);
        System.out.println(value);
        // int size() 返回当前键值对的个数
        int len = map.size();
        System.out.println(len);
        value = map.get("语文");
        System.out.println(value);
        value= map.get("体育");
        System.out.println(value);
        /*
        V remove(K k)
         根据给定的Key 删除Map中这组键值对。返回值为这个key对应的value.
         */
       value = map.remove("语文");
        System.out.println(map);
        System.out.println(value);// 返回删除key值对应的value值
        boolean b = map.containsKey("体育");
        boolean b1 = map.containsValue(23);
        System.out.println("是否包含Key:" + b);
        System.out.println("是否包含Value:" + b1);
        map.clear();
        System.out.println(map);
        boolean empty = map.isEmpty();
        System.out.println(empty);


    }
}
